package chapter07.s02bytestream.p03buffered;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * 字节缓冲流
 *
 * IO提供两个带缓冲的字节流，分别是
 * BufferedInputStream
 * BufferedOutputStream
 *
 * 这两个流内部都定义了一个大小为8192的字节数组，
 * 第11~12行代码中调用read()或者write()方法读写数据时，
 * 首先将读写的数据存入定义好的字节数组，然后将字节数组的数据一次性读写到文件中
 */
public class Example14 {
    public static void main(String[] args) throws Exception {
        // 创建一个带缓冲区的输入流
        BufferedInputStream bis = new BufferedInputStream(new
                FileInputStream("src/chapter07/keras-mnist-model.h5"));
        // 创建一个带缓冲区的输出流
        BufferedOutputStream bos = new BufferedOutputStream(
                new FileOutputStream("src/chapter07/keras-mnist-model3.h5"));
        int len;
        long begintime = System.currentTimeMillis();
        while ((len = bis.read()) != -1) {
            bos.write(len);
        }
        long endtime = System.currentTimeMillis();
        System.out.println("拷贝文件所消耗的时间是：" + (endtime - begintime) +
                "毫秒");
        bis.close();
        bos.close();
    }
}
